-- =============================================
-- Query: Lấy Thông Tin Phim
-- =============================================
select p.*, s.NgayChieu, tg.ThoiGian, ph.HinhAnh, ph.AmThanh
from Phim p
left join SuatChieu s on s.MaPhim=p.MaPhim
left join ThoiGianChieu tg on tg.MaThoiGianChieu=s.MaThoiGianChieu
left join PhongChieu ph on ph.MaPhongChieu=s.MaPhongChieu
order by p.TenPhim, s.NgayChieu, tg.ThoiGian

-- =============================================
-- Query: Lấy Thông Tin Đặt Vé
-- =============================================
select h.MaHoaDon, v.MaVe, h.NgayDat, h.NgayThanhToan, h.TongTien, h.TrangThai,
  p.TenPhim, p.TheLoai, s.NgayChieu, tg.ThoiGian, ph.HinhAnh, ph.AmThanh,
  cn.Ten as ChoNgoi, lv.Ten as LoaiVe, lv.Gia, kh.HoTen
from HoaDon h
left join Ve v on v.MaHoaDon=h.MaHoaDon
left join LoaiVe lv on lv.MaLoaiVe=v.MaLoaiVe
left join ChoNgoi cn on cn.MaChoNgoi=v.MaChoNgoi
left join KhachHang kh on kh.MaKH=h.MaKH
left join SuatChieu s on s.MaSuatChieu=v.MaSuatChieu
left join Phim p on p.MaPhim=s.MaPhim
left join ThoiGianChieu tg on tg.MaThoiGianChieu=s.MaThoiGianChieu
left join PhongChieu ph on ph.MaPhongChieu=s.MaPhongChieu
order by h.NgayDat, h.NgayThanhToan, h.TongTien, h.TrangThai,
  p.TenPhim, s.NgayChieu, tg.ThoiGian, ph.HinhAnh, ph.AmThanh, cn.Ten, lv.Ten, kh.HoTen


-- =============================================================
-- Tình huống 2
-- =============================

-- =============================================
-- T1: Đặt vé xem phim
-- =============================================
DECLARE @maHoaDon int
DECLARE @maKH int = 2
DECLARE @ngayDat datetime = '2013-08-20'
DECLARE @ngayThanhToan datetime = NULL
DECLARE @trangThai smallint = 0

EXECUTE @maHoaDon = [QuanLyRapPhim].[dbo].[sp_ThemHoaDon]
   @maKH
  ,@ngayDat
  ,@ngayThanhToan
  ,@trangThai
 
DECLARE @maVe int
DECLARE @maSuatChieu int = 2
DECLARE @maLoaiVe int = 1
DECLARE @maChoNgoi int = 13

EXECUTE @maVe = [QuanLyRapPhim].[dbo].[sp_DatVe_fixed]
   @maHoaDon
  ,@maSuatChieu
  ,@maLoaiVe
  ,@maChoNgoi
  
SET @maChoNgoi = 15
EXECUTE @maVe = [QuanLyRapPhim].[dbo].[sp_DatVe_fixed]
   @maHoaDon
  ,@maSuatChieu
  ,@maLoaiVe
  ,@maChoNgoi
IF NOT EXISTS(SELECT 1 FROM Ve WHERE MaHoaDon=@maHoaDon)
	DELETE FROM HoaDon WHERE MaHoaDon=@maHoaDon
GO


-- =============================================
-- T2: Đặt vé xem phim
-- =============================================
DECLARE @maHoaDon int
DECLARE @maKH int = 1
DECLARE @ngayDat datetime = '2013-08-20'
DECLARE @ngayThanhToan datetime = NULL
DECLARE @trangThai smallint = 0

EXECUTE @maHoaDon = [QuanLyRapPhim].[dbo].[sp_ThemHoaDon]
   @maKH
  ,@ngayDat
  ,@ngayThanhToan
  ,@trangThai

DECLARE @maVe int
DECLARE @maSuatChieu int = 2
DECLARE @maLoaiVe int = 1
DECLARE @maChoNgoi int = 13

EXECUTE @maVe = [QuanLyRapPhim].[dbo].[sp_DatVe_fixed]
   @maHoaDon
  ,@maSuatChieu
  ,@maLoaiVe
  ,@maChoNgoi
  
SET @maChoNgoi = 14
EXECUTE @maVe = [QuanLyRapPhim].[dbo].[sp_DatVe_fixed]
   @maHoaDon
  ,@maSuatChieu
  ,@maLoaiVe
  ,@maChoNgoi

IF NOT EXISTS(SELECT 1 FROM Ve WHERE MaHoaDon=@maHoaDon)
	DELETE FROM HoaDon WHERE MaHoaDon=@maHoaDon
GO
 



-- =============================================================
-- Tình huống 4
-- =============================

-- =============================================
-- T1: Đặt vé xem phim
-- =============================================
DECLARE @maVe int
DECLARE @maHoaDon int = 3
DECLARE @maSuatChieu int = 1
DECLARE @maLoaiVe int = 2
DECLARE @maChoNgoi int = 5

EXECUTE @maVe = [QuanLyRapPhim].[dbo].[sp_DatVe]
   @maHoaDon
  ,@maSuatChieu
  ,@maLoaiVe
  ,@maChoNgoi



-- =============================================
-- T2: Hủy vé xem phim
-- =============================================
DECLARE @RC int
DECLARE @maVe int = 5

EXECUTE @RC = [QuanLyRapPhim].[dbo].[sp_HuyVe]
   @maVe
GO

